/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.model.service;

import com.model.dao.orm.SesionImpl;
import com.model.domain.ubicacion.Conglomerado;
import com.model.domain.ubicacion.Vivienda;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 *
 * @author Rdelacruz
 */
public class ViviendaService 
extends AbstractServiceOrm<Vivienda>
{
    /**
     * El objetivo de este método es obtener la lista de viviendasReemplazo de cada vivienda
     * Para ello se usa un objeto Sesion que guarda una instancia única de cada vivienda
     * @param sesion
     * @param vivienda debe tener conglomerado y codigo como mínimo
     * @param viviendaReemplazada debe tener conglomerado y codigo como mínimo
     * @return 
     */
    public Vivienda establecerViviendaReemplazada(SesionImpl<Vivienda> sesion, Vivienda vivienda, Vivienda viviendaReemplazada) {
        Vivienda vSesion = sesion.saveIfNotExists(vivienda);
        Vivienda vReempSesion = sesion.saveIfNotExists(viviendaReemplazada);
        vSesion.setViviendaReemplazada(vReempSesion); 
        vReempSesion.addViviendaReemplazo(vSesion);//la lista de viviendasReemplazo
        return vSesion;
    }

    public Vivienda findByCodigo(Connection con, String codigoConglomerado, String codigoVivienda) throws SQLException {
        Statement st = null;
        try {                        
            st = con.createStatement();
            String sql = "select Conglome, Vivienda from Campo_Vivienda"
                    + " where Conglome='"+codigoConglomerado+"' and Vivienda='"+codigoVivienda+"'";
            ResultSet rs = st.executeQuery(sql);            
            if(rs.next()) {                
                Conglomerado c = new Conglomerado();
                c.setCodigo(rs.getString(1));
                
                Vivienda obj = new Vivienda();
                obj.setCodigo(rs.getString(2));
                obj.setConglomerado(c);
                return obj;
            }
        }
        finally {
            if(st!=null) st.close();
        }
        return null;
    }
      
}
